<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 1.async 修饰的方法默认返回的就是一个promise对象
    // 2.async 内部return的值 相当于 Promise.resolve()
    // 3.await 必须写在 async修饰的方法内部
    // 4.await 会阻塞函数内部代码的执行，等await后面的异步方法执行完毕之后，才按序往下执行


    // async function fn() {

    // }
    // const p = fn()
    // console.log(p)
    // async function fn() {
    //   return 1
    // }
    // function fn2(){
    //   return new Promise((resolve,reject)=>{
    //     resolve(1)
    //   })
    // }
    // fn().then(res=>{
    //   console.log(res)
    // })
    // fn2().then(res=>{
    //   console.log(res)
    // })

    function fn() {
      const p = new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve(1)
        }, 2000);
      })
      return p
    }

    function fn2() {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve(2)
        }, 1000);
      })
    }

    async function fn3() {
      const res = await fn()
      console.log(res)
      const res2 = await fn2()
      console.log(res2)
      console.log(3)
    }
    fn3()
  </script>
</body>

</html>